package com.sumainfor.pc.market.feign.ZuulFeign;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.common.utlis.Pager;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 功能描述:
 *
 * @Auther: zhlu
 * @Date: 2019/1/18 16:02
 * @Description:
 */
public interface ZuulFeign {

    /**
     * 功能描述:
     * 获取所有用户的编号和名称
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/18 17:19
     */
    @GetMapping("/provider/user/getAllUserIdAndName")
    JsonResult getAllUserIdAndName();

    @ResponseBody
    @GetMapping("/provider/dept/getDeptList")
    List<Map<String, Object>> getDeptList(@RequestParam(value = "params") Map<String, Object> params);

    /**
     * 功能描述:
     * 根据编号获取服务中心资料(包含。服务中心负责人)
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/7/11 16:31
     */
    @ResponseBody
    @GetMapping("/provider/dept/getDeptByDeptIdMap")
    Map<String,Object> getDeptByDeptIdMap(@RequestParam(value = "params")Map<String,Object>params);

    /**
     * 功能描述: 
     * 获取所有服务中心
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/16 16:45
     */
    @ResponseBody
    @PostMapping("/provider/dept/getPostDeptList")
    List<Map<String, Object>> getPostDeptList(@RequestBody Map<String,Object>params);

    /**
     * 调用Zuul 获取用户的信息 和部门名称
     *
     * @return Map结构数据
     */
    @PostMapping("/provider/getUser")
    JsonResult getUserInfo(@RequestBody Collection<String> ids);

    /**
     * 查询手机号
     *
     * @param userId
     * @return
     */
    @PostMapping("/provider/tenant/getPhoneNumberByUserId")
    JsonResult getMobileNumber(@RequestParam("userId") String userId);

    /**
     * 功能描述:
     * 根据用户编号获取用户资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/17 17:11
     */
    @GetMapping("/provider/user/getUserMap")
    JsonResult getUserMap(@RequestParam Map<String, Object> params);


    /**
     * 功能描述:
     * 根据公司编号获取公司信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/17 17:11
     */
    @PostMapping("/provider/user/getArea")
    Map<String,Object> getArea(@RequestBody Map<String, Object> params);




    /**
     * 功能描述:
     * 创建消息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/10 17:09
     */
    @PostMapping("/provider/message/AddMessage")
    JsonResult AddMessage(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据角色获取消息列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/10 20:42
     */
    @GetMapping("/provider/message/getMessageList")
    JsonResult getMessageList(@RequestParam(value = "params") Map<String, Object> params, @RequestParam("pager") Pager pager);


    ///////////////////////////////////////////////////////////////////////////
    // 总经办
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 查询这个部门下的人员数量
     *
     * @param deptId
     * @return
     */
    @PostMapping("/provider/getPeopleCountByDeptId")
    Integer getPeopleCountByDeptId(@RequestParam("deptId") Integer deptId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime);

    /**
     * 查询人信息数据
     *
     * @param size
     * @param current
     * @param miId
     * @param startTime
     * @param endTime
     * @return
     */
    @PostMapping("/provider/selectPeopleData")
    Page<Map<String, Object>> selectPeopleData(@RequestParam("size") long size, @RequestParam("current") long current, @RequestParam("miId") String miId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime);


    /**
     * 获取服务中心编号集合 通过公司编号进行查询
     *
     * @param areaId
     * @return
     */
    @PostMapping("/provider/getCenterServiceIdList")
    List<Map<String, Object>> getCenterServiceIdList(@RequestParam("areaId") Integer areaId);


    /**
     * 根据用户编号查询用户
     * @author zhoucong
     * @data 2019/9/6
     * @Param
     * @return
     */
    @PostMapping("/tenant/key/sysUserListEva/getSystemUser")
    JsonResult getSystemUser(@RequestBody Map<String,Object> params);
}
